<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>JSDoc: Mixin: ChainReactor</title>

    <script src="scripts/prettify/prettify.js"> </script>
    <script src="scripts/prettify/lang-css.js"> </script>
    <!--[if lt IE 9]>
      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
    <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>

<body>

<div id="main">

    <h1 class="page-title">Mixin: ChainReactor</h1>

    




<section>

<header>
    
        <h2>ChainReactor</h2>
        
    
</header>

<article>
    <div class="container-overview">
    
        
            <div class="description">The chain reactor mixin, provides methods to the target object that allow chain
reaction events to propagate to the target and be handled, processed and passed
on down the chain.</div>
        

        


<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="Mixin.ChainReactor.js.html">Mixin.ChainReactor.js</a>, <a href="Mixin.ChainReactor.js.html#line9">line 9</a>
    </li></ul></dd>
    

    

    

    
</dl>


        
    
    </div>

    

    

    

     

    

    
            <h3 class="subsection-title">Methods</h3>

            <ul><li><a href="#chain"><span class="type-signature">(static) </span>chain<span class="signature">(obj)</span><span class="type-signature"></span></a></li><li><a href="#chainEnabled"><span class="type-signature">(static) </span>chainEnabled<span class="signature">(val)</span><span class="type-signature"> &rarr; {*}</span></a></li><li><a href="#chainReceive"><span class="type-signature">(static) </span>chainReceive<span class="signature">(sender, type, data, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></a></li><li><a href="#chainSend"><span class="type-signature">(static) </span>chainSend<span class="signature">(type, data, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></a></li><li><a href="#chainWillSend"><span class="type-signature">(static) </span>chainWillSend<span class="signature">()</span><span class="type-signature"> &rarr; {Boolean}</span></a></li><li><a href="#unChain"><span class="type-signature">(static) </span>unChain<span class="signature">(obj)</span><span class="type-signature"></span></a></li></ul>

            
                

    

    <h4 class="name" id=".chain"><span class="type-signature">(static) </span>chain<span class="signature">(obj)</span><span class="type-signature"></span></h4>

    



<div class="description">
    Creates a chain link between the current reactor node and the passed
reactor node. Chain packets that are send by this reactor node will
then be propagated to the passed node for subsequent packets.
</div>









    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>obj</code></td>
            

            <td class="type">
            
                
<span class="param-type">*</span>


            
            </td>

            

            

            <td class="description last">The chain reactor node to link to.</td>
        </tr>

    
    </tbody>
</table>






<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="Mixin.ChainReactor.js.html">Mixin.ChainReactor.js</a>, <a href="Mixin.ChainReactor.js.html#line16">line 16</a>
    </li></ul></dd>
    

    

    

    
</dl>
















            
                

    

    <h4 class="name" id=".chainEnabled"><span class="type-signature">(static) </span>chainEnabled<span class="signature">(val)</span><span class="type-signature"> &rarr; {*}</span></h4>

    



<div class="description">
    Gets / sets the flag that will enable / disable chain reactor sending
from this instance. Chain reactor sending is enabled by default on all
instances.
</div>









    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>val</code></td>
            

            <td class="type">
            
                
<span class="param-type">Boolean</span>


            
            </td>

            

            

            <td class="description last">True or false to enable or disable chain sending.</td>
        </tr>

    
    </tbody>
</table>






<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="Mixin.ChainReactor.js.html">Mixin.ChainReactor.js</a>, <a href="Mixin.ChainReactor.js.html#line64">line 64</a>
    </li></ul></dd>
    

    

    

    
</dl>













<h5>Returns:</h5>

        


<dl>
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">*</span>


    </dd>
</dl>

    



            
                

    

    <h4 class="name" id=".chainReceive"><span class="type-signature">(static) </span>chainReceive<span class="signature">(sender, type, data, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4>

    



<div class="description">
    Handles receiving a chain reactor message that was sent via the chainSend()
method. Creates the chain packet object and then allows it to be processed.
</div>









    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        
        <th>Attributes</th>
        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>sender</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>


            
            </td>

            
                <td class="attributes">
                

                

                
                </td>
            

            

            <td class="description last">The node that is sending the packet.</td>
        </tr>

    

        <tr>
            
                <td class="name"><code>type</code></td>
            

            <td class="type">
            
                
<span class="param-type">String</span>


            
            </td>

            
                <td class="attributes">
                

                

                
                </td>
            

            

            <td class="description last">The type of packet.</td>
        </tr>

    

        <tr>
            
                <td class="name"><code>data</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>


            
            </td>

            
                <td class="attributes">
                

                

                
                </td>
            

            

            <td class="description last">The data related to the packet.</td>
        </tr>

    

        <tr>
            
                <td class="name"><code>options</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>


            
            </td>

            
                <td class="attributes">
                
                    &lt;optional><br>
                

                

                
                </td>
            

            

            <td class="description last">An options object.</td>
        </tr>

    
    </tbody>
</table>






<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="Mixin.ChainReactor.js.html">Mixin.ChainReactor.js</a>, <a href="Mixin.ChainReactor.js.html#line135">line 135</a>
    </li></ul></dd>
    

    

    

    
</dl>
















            
                

    

    <h4 class="name" id=".chainSend"><span class="type-signature">(static) </span>chainSend<span class="signature">(type, data, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4>

    



<div class="description">
    Sends a chain reactor packet downstream from this node to any of its
chained targets that were linked to this node via a call to chain().
</div>









    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        
        <th>Attributes</th>
        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>type</code></td>
            

            <td class="type">
            
                
<span class="param-type">String</span>


            
            </td>

            
                <td class="attributes">
                

                

                
                </td>
            

            

            <td class="description last">The type of chain reactor packet to send. This
can be any string but the receiving reactor nodes will not react to
it unless they recognise the string. Built-in strings include: "insert",
"update", "remove", "setData" and "debug".</td>
        </tr>

    

        <tr>
            
                <td class="name"><code>data</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>


            
            </td>

            
                <td class="attributes">
                

                

                
                </td>
            

            

            <td class="description last">A data object that usually contains a key called
"dataSet" which is an array of items to work on, and can contain other
custom keys that help describe the operation.</td>
        </tr>

    

        <tr>
            
                <td class="name"><code>options</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>


            
            </td>

            
                <td class="attributes">
                
                    &lt;optional><br>
                

                

                
                </td>
            

            

            <td class="description last">An options object. Can also contain custom
key/value pairs that your custom chain reactor code can operate on.</td>
        </tr>

    
    </tbody>
</table>






<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="Mixin.ChainReactor.js.html">Mixin.ChainReactor.js</a>, <a href="Mixin.ChainReactor.js.html#line94">line 94</a>
    </li></ul></dd>
    

    

    

    
</dl>
















            
                

    

    <h4 class="name" id=".chainWillSend"><span class="type-signature">(static) </span>chainWillSend<span class="signature">()</span><span class="type-signature"> &rarr; {Boolean}</span></h4>

    



<div class="description">
    Determines if this chain reactor node has any listeners downstream.
</div>













<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="Mixin.ChainReactor.js.html">Mixin.ChainReactor.js</a>, <a href="Mixin.ChainReactor.js.html#line77">line 77</a>
    </li></ul></dd>
    

    

    

    
</dl>













<h5>Returns:</h5>

        
<div class="param-desc">
    True if there are nodes downstream of this node.
</div>



<dl>
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Boolean</span>


    </dd>
</dl>

    



            
                

    

    <h4 class="name" id=".unChain"><span class="type-signature">(static) </span>unChain<span class="signature">(obj)</span><span class="type-signature"></span></h4>

    



<div class="description">
    Removes a chain link between the current reactor node and the passed
reactor node. Chain packets sent from this reactor node will no longer
be received by the passed node.
</div>









    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>obj</code></td>
            

            <td class="type">
            
                
<span class="param-type">*</span>


            
            </td>

            

            

            <td class="description last">The chain reactor node to unlink from.</td>
        </tr>

    
    </tbody>
</table>






<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="Mixin.ChainReactor.js.html">Mixin.ChainReactor.js</a>, <a href="Mixin.ChainReactor.js.html#line39">line 39</a>
    </li></ul></dd>
    

    

    

    
</dl>
















            
        

    


    

    
</article>

</section>




</div>

<nav>
    <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ActiveBucket.html">ActiveBucket</a></li><li><a href="Angular.html">Angular</a></li><li><a href="AutoBind.html">AutoBind</a></li><li><a href="Collection.html">Collection</a></li><li><a href="CollectionGroup.html">CollectionGroup</a></li><li><a href="Condition.html">Condition</a></li><li><a href="Core.html">Core</a></li><li><a href="Db.html">Db</a></li><li><a href="Document.html">Document</a></li><li><a href="Grid.html">Grid</a></li><li><a href="Highchart.html">Highchart</a></li><li><a href="Index2d.html">Index2d</a></li><li><a href="IndexBinaryTree.html">IndexBinaryTree</a></li><li><a href="IndexHashMap.html">IndexHashMap</a></li><li><a href="Infinilist.html">Infinilist</a></li><li><a href="KeyValueStore.html">KeyValueStore</a></li><li><a href="Metrics.html">Metrics</a></li><li><a href="MyModule.html">MyModule</a></li><li><a href="NodeApiClient.html">NodeApiClient</a></li><li><a href="NodeApiServer.html">NodeApiServer</a></li><li><a href="NodeRAS.html">NodeRAS</a></li><li><a href="Odm.html">Odm</a></li><li><a href="OldView.html">OldView</a></li><li><a href="Operation.html">Operation</a></li><li><a href="Overload.html">Overload</a></li><li><a href="Overview.html">Overview</a></li><li><a href="Overview_init.html">init</a></li><li><a href="Path.html">Path</a></li><li><a href="Persist.html">Persist</a></li><li><a href="Procedure.html">Procedure</a></li><li><a href="ReactorIO.html">ReactorIO</a></li><li><a href="Section.html">Section</a></li><li><a href="Serialiser.html">Serialiser</a></li><li><a href="Shared.overload.html">overload</a></li><li><a href="View.html">View</a></li></ul><h3>Mixins</h3><ul><li><a href="ChainReactor.html">ChainReactor</a></li><li><a href="Common.html">Common</a></li><li><a href="Constants.html">Constants</a></li><li><a href="Events.html">Events</a></li><li><a href="Matching.html">Matching</a></li><li><a href="Shared.html">Shared</a></li><li><a href="Sorting.html">Sorting</a></li><li><a href="Tags.html">Tags</a></li><li><a href="Triggers.html">Triggers</a></li><li><a href="Updating.html">Updating</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>

<br class="clear">

<footer>
    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.0</a> on Thu Mar 01 2018 11:34:22 GMT+0000 (GMT)
</footer>

<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>